#include "Buzzer.h"

Buzzer::Buzzer(uint8_t pin, bool activeLow) 
    : _pin(pin), _activeLow(activeLow) {}

void Buzzer::begin() {
    pinMode(_pin, OUTPUT);
    digitalWrite(_pin, _activeLow ? HIGH : LOW); // 初始关闭
    Serial.printf("[Buzzer] 初始化完成 | 引脚:%d | 触发模式:%s\n", 
                 _pin, _activeLow ? "低电平" : "高电平");
}

void Buzzer::alert(uint16_t duration) {
    digitalWrite(_pin, _activeLow ? LOW : HIGH); // 触发
    Serial.printf("蜂鸣器触发 | 持续时间:%dms\n", duration);
    Serial.printf("蜂鸣器初始化完成 | 引脚状态: %d\n", digitalRead(_pin));
    delay(100); // 确保蜂鸣器有时间发声
    Serial.printf("蜂鸣器状态: %d\n", digitalRead(_pin));

    delay(duration);
    stop(); // 自动停止
}

void Buzzer::stop() {
    digitalWrite(_pin, _activeLow ? HIGH : LOW); // 关闭
}
